VisualAppletsでの実装

VisualAppletsでは、幾何学的変換、幾何学的変換とDistortion Correctionの組み合わせ、および画像モーメントによって制御される幾何学的変換を実行するサンプルデザインが実装されています。幾何学的変換は、ターゲットからソースへのマッピング(つまり逆変換)を使用して実装されます。この手法は、PCに送信されるターゲット画像に欠落ピクセルがないことを保証するために不可欠です [Bur06]。ここでは、演算子 FrameBufferRandomRead に基づく逆幾何学的変換と、代替として演算子 PixelReplicator に基づく逆幾何学的変換を実装しています。これらの違いについては、次のサブセクションで説明します。これらのサブセクションでは、サンプルデザインについて詳しく紹介します。

FrameBufferRandomRead を使用した幾何学的変換
概要

ファイル: \examples\Processing\Geometry\GeometricTransformation\GeometricTransformation_ FrameBufferRandomRead.va

デフォルトプラットフォーム: mE5-MA-VCL

簡単な説明

幾何学的変換: 演算子 FrameBufferRandomRead を使用した回転、平行移動、Scaling

VAデザイン「Geometric Transformation_FrameBufferRandomRead.va」では、ターゲットからソースへのマッピングによる幾何学的変換が実装されています。この手法は、PCに送信されるターゲット画像に欠落ピクセルがないことを保証するために不可欠です [Bur06]。 ソース画像の座標は、すべてのターゲット座標に対して逆幾何学的変換によって計算されます 。 座標 の位置において、ソース画像のピクセル値は、Parallelism 1で演算子 によって読み取られます FrameBufferRandomRead 。この演算子は各ピクセルをDRAMに個別に保存し、1ピクセルずつ順番に読み取ります。計算されたソース画像の座標がソース画像のピクセル座標と一致しない場合、線形補間によってPC上の出力画像のピクセル値を補正することができます。 図 297 に、基本デザイン構造を示します。

VAデザイン「GeometricTransformation_FrameBufferRandomRead.va」の基本デザイン構造

図297. VAデザイン「GeometricTransformation_FrameBufferRandomRead.va」の基本デザイン構造


このデザインは、Camera Linkベース構成のカメラインターフェイス(BaseGrayCamera_Camera)と、取得した画像のScaling、回転、平行移動を実行するHierarchicalBox Geometric Transformationで構成されています。演算子 ImageBuffer_Buffer により、画像を保存することができます。画像はDMA(演算子 DmaToPC_DMA0)を介してPCに転送されます。

298に、HierarchicalBox GeometricTransformationの内容を示します。 パラメータ IntParamTranslator、FloatParamReference、および IntParamReferenceを使用すると、幾何学的変換の関連パラメータ(Scaling、回転、平行移動の値、および画像寸法)を非常に簡単に設定できます。プロパティは、画像の Height と Width、画像をX方向およびY方向にシフトするピクセル数(パラメータ: Translatex および Translatey)、ならびにX方向およびY方向のスケールファクター Scalex と Scaley です。パラメータ Phi を使用して、回転角度を度単位で設定できます。あるいは、HierarchicalBox GeometricTransformation上で右クリックすることにより、これらの Properties を設定することもできます。このボックスの内容は図298に示されています。

HierarchicalBox「GeometricTransformation」の内容

図298. HierarchicalBox「GeometricTransformation」の内容


イメージ SourceImage がバッファに線形書き込みされます FrameBufferRandomRead。各ピクセルとともに、次の近傍ピクセルが2x2カーネル(HierarchicalBox NextNeighbours)に保存されます。 ターゲット画像の座標は (eq. 21) は、次のオペレーターで作成されます: CreateBlankImage, CoordinateX および CoordinateY HierarchicalBox内 OutputImage (HierarchicalBox CoordinateTransformation) に含まれています (図 299 および 300を使用します。

HierarchicalBox CoordinateTransformation の内容

図 299: HierarchicalBox CoordinateTransformation の内容


HierarchicalBox OutputImage の内容

図 300: HierarchicalBox OutputImage の内容


座標 は、eq. に従って逆方向に回転、平行移動、および/または Scaling することができます。 21。回転角 、および平行移動・Scaling 用のパラメータ および は、上述のようにトランスポートパラメータ経由で対応する定数を設定することで選択できます。図 301 では、追加の Scaling 機能を備えた eq. の VA 実装を確認できます。 21 。

HierarchicalBox InverseTransformation の内容

図 301: HierarchicalBox InverseTransformation の内容


逆変換の結果得られる座標は、ソース座標です および (eq. 21)。HierarchicalBox SplitFractionalAndIntegerBit (図 298) これらの座標の整数部と小数部が分離されます。ソース画像のピクセル位置に対応する整数部は、 オペレーターの座標入力となります。 FrameBufferRandomRead XおよびY方向の(図 298を参照)。 このオペレーターは、対応する座標において、ソース画像からピクセル値情報(Parallelism = 1)をその近傍ピクセル(上記参照)と共に読み込みます。 ソース座標の小数部は、 および ソース画像のサブピクセル位置に対応します。 これらの情報とソース画像の近傍ピクセルのピクセル値情報を使用して、ターゲット画像の真のピクセル値がHierarchicalBox内でバイリニア 補間されます。 補間。補間プロセスの詳細な説明については、[Bur06].

図 302および303に、幾何学的変換の例としてソース画像とターゲット画像を示しています。XおよびY方向に100ピクセルの平行移動を行い、45°の回転を実行しています。

ソース画像

図 302. ソース画像 [Ope16a]


回転および平行移動されたターゲット画像

図 303. 回転および平行移動されたターゲット画像


画像モーメントを使用した幾何学的変換
概要

ファイル: \examples\Processing\Geometry\GeometricTransformation\GeometricTransformation_ImageMoments.va

デフォルトプラットフォーム: mE5-MA-VCL

簡単な説明

幾何学的変換:画像モーメントを使用した、オブジェクトの画像中心への回転および平行移動

このサンプルデザインでは、画像モーメントを使用してRGB画像内のオブジェクトの位置と回転角度を決定します。水平方向への 回転と画像中心への平行移動を実行します。デフォルトでは、入力画像の寸法は640x240ピクセル、 出力画像の寸法は256x128ピクセルです。 図304に基本設計構造を示します。

VAデザイン「GeometricTransformation_ImageMoments.va」の基本設計構造

図 304. VAデザイン「GeometricTransformation_ImageMoments.va」の基本設計構造


このデザインは、Camera Link Base構成のRGBカメラインターフェース(BaseRgbCamera_Camera)と、取得した画像の回転と平行移動を実行するHierarchicalBox Geometric Transformationで構成されています。「Properties」の下で右クリックすると、 入力および出力画像の寸法と二値化閾値を設定できます。この閾値は、後述する画像モーメントの計算に関係します。 幾何学的変換は、ターゲットからソースへのマッピング(セクションの導入テキストを参照)で行われます。 DMA(オペレーター DmaToPC_DMA0)を介して、画像がPCに転送されます。図305に、 Geometric Transformationの内容を示します。

HierarchicalBox GeometricTransformationの内容

図 305. HierarchicalBox GeometricTransformationの内容


水平位置に対する回転角度とオブジェクトの重心 位置は、二値化された画像(HierarchicalBox Binarization)で計算されたHierarchicalBox ImageMoments内の画像モーメントを使用して決定されます。ImageMomentsの内容は、VAのサンプル「ImageMoments.va」のボックスImageMomentsと同等ですが(セクションの図325を参照)、オブジェクトの偏心率の計算は含まれません。HierarchicalBox ImageMomentsの出力リンク(上から下へ)は、XおよびY方向の重心位置と回転角度です。 これらのパラメータに基づくソース座標の計算(式21による)は、 HierarchicalBox CoordinateTransformationの内容です。 306に、このボックスの内容を示します。

HierarchicalBox CoordinateTransformation の内容

図 306. HierarchicalBox CoordinateTransformationの内容


HierarchicalBox 内で 同期化 X方向およびY方向の重心のシングルピクセル値と回転が、HierarchicalBoxで定義された出力画像の次元に拡張されます OutputImageこのボックスの出力リンクはターゲット画像の座標を表します 。HierarchicalBox 内では、 InverseTransformation ソース座標は および 式に従って計算されます 21図 307 にこのボックスの内容が表示されています

HierarchicalBox InverseTransformation の内容

図 307. HierarchicalBox InverseTransformationの内容


このボックス内のデザイン構造は、サンプル「GeometricTransformation_FrameBufferRandomRead.va」および「GeometricTransformation_PixelReplicator.va」における逆変換の実装と似ています。違いは、X方向およびY方向の平行移動パラメータが、X方向およびY方向の重心と画像中心の差によって決定される点です(ボックス Translation_x および Translation_yの内容を参照)。回転角度(ボックス Phiの内容)は、画像モーメントの計算結果によって定義されます。図の基本デザイン構造に戻ります 304計算されたソース画像座標は および ボックスの出力リンクを表します CoordinateTransformationボックス内 GeometricTransformation (図 308)では、サンプル「GeometricTransformation_FrameBufferRandomRead.va」と同様に、オペレーターを使用した幾何学的変換 FrameBufferRandomRead と正しいターゲットピクセル値のバイリニア補間が実行されます(セクションの図 298 を参照 を使用します。

Content of HierarchicalBox GeometricTransformation

図 308. HierarchicalBox GeometricTransformationの内容


図 309 のオブジェクトの例については、向きと位置が補正されたターゲット画像を図 310 で確認できます。

ソース画像(寸法:640x240 ピクセル)

図 309. ソース画像(解像度: 640x240ピクセル)


位置および向きが補正されたターゲット画像(寸法:256x128 ピクセル)

図 310:位置および向きが補正されたターゲット画像(寸法:256x128 ピクセル)


PixelReplicator を使用した幾何学変換
概要

ファイル: \examples\Processing\Geometry\GeometricTransformation\GeometricTransformation_PixelReplicator.va

デフォルトプラットフォーム: mE5-MA-VCL

簡単な説明

幾何学変換:オペレーター PixelReplicator を使用した回転、平行移動、Scaling

VisualApplets のデザイン例「GeometricTransformation_PixelReplicator.va」は、「GeometricTransformation_FrameBufferRandomRead.va」の例と同じ幾何学変換を実行しますが、より高いパフォーマンスを発揮します。上記で説明したように、オペレーター FrameBufferRandomRead は各ピクセルを個別に DRAM に格納し、順番に読み取ります。この例では、一定量のピクセルのブロックが DRAM セルに格納されます。 このデザイン例では、読み取るピクセルが前のピクセルと同じセルにない場合にのみ、DRAM から読み取りを行います。DRAM セルあたり 8 ピクセルを使用する図 311 の例は、パフォーマンスの向上をイメージするためのものです。

例:1 つの DRAM セルに 8 ピクセルが格納される

図 311. 例:1 つの DRAM セルに 8 ピクセルが格納される


DRAM ブロックは緑色でマークされています。9 つのピクセル a から i を読み取るには、9 回ではなく 3 回の DRAM サイクルが必要です。ここでは 3 の有効な Parallelism を達成しています。 1 つの RAM セルに格納できる 8 ビットピクセルの最大数は 32 です(marathon VCL データ幅:256 ビット)。RAM セルブロックの ROI の形状は、幾何学変換の回転角によって定義されます。デフォルトでは、この例では 9x3 ピクセルの RAM セル形状が選択されています。 基本設計構造は図 297 の設計構造と同等ですが、オペレーター PARALLELdn_To1 は含まれていません。HierarchicalBox GeometricTransformation のコンテンツも、「GeometricTransformation_FrameBufferRandomRead.va」の例の対応するボックス(図 298)と同等です。違いは、オペレーター FrameBufferRandomRead が HierarchicalBox FrameBufferRandomRead_Par8 に置き換えられていることです。そのコンテンツは図 312 で確認できます。

HierarchicalBox FrameBufferRandomRead_Par8 のコンテンツ

図 312. HierarchicalBox FrameBufferRandomRead_Par8 のコンテンツ


ボックス内では CollectNeighbors ソース画像はサブ ROI に分割され、これが各 RAM セルのサイズを定義します。ここでは 9x3 の RAM セルサイズが選択されています。 HierarchicalBoxes SplitAdressX および SplitAdressY ソース座標の整数ビット部分 および 逆幾何学変換の結果として(セクション を参照)、2つのコンポーネントに分割されます。上位ビット部分( SplitAdressX および SplitAdressYの上位出力リンク)は DRAM セルの位置を表し、下位ビット部分はおよび DRAM セル内のピクセル位置を表します。DRAM セルは、HierarchicalBox 内の DRAM セル座標で読み取られます Buffer (オペレーター FrameBufferRandomReadを含む)決定されなかった場合 RepeatDeciderは、前回のDRAMセルを再利用するかどうかを決定します。前回のセルを再利用すると判断された場合、DRAMセルのピクセル値を複製する必要があります。 これは、HierarchicalBox 内で実行されます。 ReplicateValues オペレーター PixelReplicatorボックス内 ExtractSubKernel を使用し、必要なピクセル値は、その隣接ピクセルとともに、ピクセル座標を出力としてDRAMセルから抽出されます。 SplitAdressX および SplitAdressY (下側の出力リンク)。 正しいターゲットピクセル値のバイリニア補間は、次の例と同様に実行されます。 .

幾何学的変換と Distortion Correction
概要

ファイル: \examples\Processing\Geometry\GeometricTransformation\GeometricTransformation_ DistortionCorrection.va

デフォルトプラットフォーム: mE5-MA-VCL

簡単な説明

オペレーター PixelReplicator を使用した幾何学変換:回転、平行移動、Scaling、歪み、および台形(Keystone)補正

VAのサンプル「GeometricTransformation_DistortionCorrection.va」は、デザイン「GeometricTransformation_PixelReplicator.va」の拡張です。 このデザインではさらに、 歪みおよび台形(Keystone)補正(式 22 および式 23 による)が実装されています。以下では、「GeometricTransformation_PixelReplicator.va」との相違点のみについて説明します。図 313 に、 基本設計構造を示します。

VAデザイン「GeometricTransformation_DistortionCorrection.va」の基本設計構造

図313. VAデザイン「GeometricTransformation_DistortionCorrection.va」の基本設計構造


CameraLinkベース構成のカメラインターフェースからのグレースケール画像(最大寸法:4096×4096ピクセル) (BaseGrayCamera_Camera)が、HierarchicalBox GeoTransAndDistCorr で変換され、DMA経由でPCに転送されます (DmaToPC_DMA0)。この構造は、デザイン「GeometricTransformation_FrameBufferRandomRead」および 「GeometricTransformation_PixelReplicator」と同等です。 GeoTransAndDistCorr の構造は、これら2つのデザインのボックス GeometricTransformation と同等です (図 298 を参照)。ここでは逆変換に加え、 歪みおよび台形(Keystone)補正が実行されます。ボックス CoordinateTransformation(ボックス GeometricTransformation 内)の内容を図 314 に示します。

HierarchicalBox CoordinateTransformation の内容

図314. HierarchicalBox CoordinateTransformation の内容


デザイン「GeometricTransformation_FrameBufferRandomRead」および 「GeometricTransformation_PixelReplicator」(セクション および )と同様に、ターゲット座標は 式に従って逆変換されます。 21 追加のScalingを伴います(セクションも参照 )。 逆変換によって得られた座標を使用して、次に、HierarchicalBoxes 内で逆台形(Keystone)および歪み補正を実行します。 KeystoneCorrrection および DistortionCorrection。これらのボックスの内容を図 315 および図 314.

に示します。HierarchicalBox KeystoneCorrectionの内容

図 315: HierarchicalBox KeystoneCorrection のコンテンツ


HierarchicalBox DistortionCorrection のコンテンツ

図 316: HierarchicalBox DistortionCorrection のコンテンツ


これらのボックスでは、式 22 および式 23 が実装されています。ボックス内の行列要素 m1 ~ m9 Z_x, Z_y および N (図 315) は、OpenCV ライブラリ [Ope16b] を使用して計算できます。サンプル画像「Example.tif」(\examples\Processing\Geometry\GeometricTransformation 内)の行列値のサンプルは、同じ場所にあるテキストファイル「MatrixValues.txt」に記載されています。 図に示されている Distortion Correction については、 314 まず、座標が光学中心に対する座標系に変換され(CoordinateTransformation_x および CoordinateTransformation_y)、これはほとんどの場合画像中心になります。HierarchicalBox DistortionCoefficient において、光学中心からの距離(式 を参照)が計算されます。すべての 23に対して、 ルックアップテーブル内に Distortion Correction パラメータが存在します(図 を参照)。 ルックアップテーブルは、\examples\Processing\Geometry\GeometricTransformation\LUTDistortionCorrection.m にある Matlab モジュールを使用して外部で作成されており、歪みパラメータも含まれています。 317)ルックアップテーブルは、\examples\Processing\Geometry\GeometricTransformation\LUTDistortionCorrection.m にある Matlab モジュールを使用して外部で作成され、歪みパラメータも含まれています。 および OpenCVライブラリで作成されています [Ope16b]。「LUTDistortionCorrection.m」には、補正パラメータの例が記載されています。 および サンプル画像「Example.tif」(\examples\Processing\Geometry\GeometricTransformation内)用 [Ope16a]。 係数 は座標と乗算されます および (図 314)。得られた歪み 座標は、「左上の画像隅」を基準とした座標系に逆変換されます(ボックス CoordinateTransformation_x および CoordinateTransformation_yを参照)。 その結果が、ソース画像座標となります および 。HierarchicalBox LimitCoordinateValues (図 314)の内容は、 変換された画像座標の境界条件を設定します。整数部と小数部の分離後、 (ボックス SplitFractionalAndIntegerBit (図 298を参照)計算された 対応する整数ソース画像座標のピクセル値がソース画像から読み出されます。 ソース画像内のピクセル間の位置による出力画像のピクセル値を補正するために、小数部は[ 補間]に従ってバイリニア補間(Bur06を参照)に使用されます。 DMAを介して、信号はPCに転送されます。 デモ目的として、図 318, 319 および 320 に歪みのあるソース画像、台形歪みおよび歪み補正済みのターゲット画像、ならびに回転および歪み補正済みのターゲット画像を示します。

HierarchicalBox DistortionCoefficientの内容

図317. HierarchicalBox DistortionCoefficientの内容


サンプルソース画像

図318. サンプルソース画像 [Ope16a]


歪みおよび台形歪み補正済みのターゲット画像

図 319: 歪みおよび台形補正(Keystone Correction)が適用されたターゲット画像


回転、歪み、および台形歪み補正済みのターゲット画像

図 320: 回転、歪み、および台形補正(Keystone Correction)が適用されたターゲット画像


Distortion Correction
概要

ファイル: \examples\Processing\Geometry\GeometricTransformation\DistortionCorrection.va

デフォルトプラットフォーム: mE5-MA-VCL

簡単な説明

このサンプルデザインでは、Distortion Correctionが実装されています。

デザイン「DistortionCorrection.va」では、式 22 に従ったDistortion Correctionが 実装されています。これは「GeometricTransformation_DistortionCorrection.va」のデザインのものと類似していますが、 幾何学的変換と台形歪み補正を実行しない点が異なります。基本デザイン構造については、図 321 を参照してください。

VAデザイン「DistortionCorrection.va」の基本設計構造

図321. VAデザイン「DistortionCorrection.va」の基本デザイン構造


このデザインは、Camera Linkベース構成のモノクロカメラ用インターフェース、バッファモジュール、HierachicalBox DistortionCorrection、および DmaToPC で構成されています。モノクロ画像の歪み補正は DistortionCorrection 内で実行されます。その内容は図 322 を参照してください。

HierarchicalBox DistortionCorrection のコンテンツ

図 322. HierarchicalBox DistortionCorrection の内容


構造は、HierarchicalBox の内容と同様です GeometricTransformation (図 298を参照)セクション「GeometricTransformation_PixelReplicator.va」のデザイン内( )。オペレーター FrameBufferRandomRead は HierarchicalBox に置き換えられます FrameBufferRandomRd_Par8 「GeometricTransformation_PixelReplicator.va」および「GeometricTransformation_DistorationCorrection.va」で行われているのと同様です(セクション および を参照)。ソース画像はバッファリング要素にリニアに書き込まれます FrameBufferRandomRd_Par8。このモジュールでは、各ピクセルとともに3つの近傍ピクセルも一緒に保存されます(ボックス CollectNeighbors 内のボックス FrameBufferRandomRd_Par8を参照)。ボックス CoordinateTransformation/ OutputImage では、ターゲット画像の座標 がオペレーターを使用して作成されます CreateBlankImage, CoordinateX および CoordinateY。これらの座標は、式に従って変換されます 22 元の画像座標へ HierarchicalBox内 InverseCorrection (ボックス CoordinateTransformationを参照)。その内容は図を参照してください 323.

HierarchicalBox InverseCorrection の内容

図 323. HierarchicalBox InverseCorrection の内容


これは、次と同等の実装です DistortionCorrection "GeometricTransformation_DistortionCorrection.va"の(図を参照 316)。ターゲット画像の各半径に対して 画像中心を基準としたルックアップテーブル値 C_r がHierarchicalBoxで選択され DistortionCoefficient. C_r ターゲット画像の座標と乗算されます 。
中間画素位置の情報 22 そして最初のピクセルを基準とした座標系に逆変換されます(参照 CoordinateTransformation_x_1 および CoordinateTransformation_y_1)。ご覧のとおり 図 322 結果のソース座標は、ボックス内で整数部分と小数部分に分割されます SplitFractionalAndIntegerBit。整数部分は対応するソース画像座標でソース画像のピクセルを読み取るために使用され、小数部分は最終結果のバイリニア補間に使用されます。歪み補正された画像はDMA経由でPCに転送されます。